package com.xuanzheng.company.dao;

import com.xuanzheng.company.entity.SystemApplication;
import java.util.List;

public interface SystemApplicationDao {
    /**
     * 添加系统使用申请
     * @param application 系统使用申请对象
     * @return 是否添加成功
     */
    boolean addApplication(SystemApplication application);
    
    /**
     * 更新系统使用申请状态
     * @param id 申请ID
     * @param status 新状态
     * @param rejectReason 拒绝原因（如果拒绝）
     * @return 是否更新成功
     */
    boolean updateApplicationStatus(String id, int status, String rejectReason);
    
    /**
     * 根据ID获取系统使用申请
     * @param id 申请ID
     * @return 系统使用申请对象
     */
    SystemApplication getApplicationById(String id);
    
    /**
     * 根据用户ID获取该用户的所有系统使用申请
     * @param userId 用户ID
     * @return 系统使用申请列表
     */
    List<SystemApplication> getApplicationsByUserId(String userId);
    
    /**
     * 获取用户最近的一条申请记录
     * @param userId 用户ID
     * @return 系统使用申请对象
     */
    SystemApplication getLatestApplicationByUserId(String userId);
    
    /**
     * 获取所有系统使用申请
     * @return 系统使用申请列表
     */
    List<SystemApplication> getAllApplications();
    
    /**
     * 根据状态获取系统使用申请
     * @param status 状态
     * @return 系统使用申请列表
     */
    List<SystemApplication> getApplicationsByStatus(int status);
    
    /**
     * 根据用户名、电话或ID搜索申请
     * @param keyword 关键词
     * @return 系统使用申请列表
     */
    List<SystemApplication> searchApplications(String keyword);
    
    /**
     * 根据状态和关键词搜索申请
     * @param status 状态
     * @param keyword 关键词
     * @return 系统使用申请列表
     */
    List<SystemApplication> searchApplicationsWithStatus(int status, String keyword);
} 